git操作

git中的基本概念

1.工作目录: workplace ,git 直接忽略

2.暂存区:stage,开始纳入git记录,没有history

     git add file.txt/ git add . :让文件从工作目录跳到暂存区(文件没有移动位置,只是被标记为纳入git记录)

3.本地仓库 Local,纳入版本控制。在工作目录的.git目录下(在本地)

     git commit/git commit file.txt: add命令只是说我将要对它进行版本控制,commit就是提交了一个版本

4.远程仓库 Remote(可能在远程服务器,可以是ssh/git/https/file协议)

   git push/git push origin master:master

---某些操作(本地操作,远程操作)

1. $ git init

2. $ git status  (绿色:已经被记录,红色:未被记录)

3. $ git commit 不跟任何参数,默认commit上一次add的所有内容

----如何生成SSH公钥?

 某个目录下打开git bash.

1. 查看是否已经有这个目录,命令:ls -al ~/.ssh

2. 生成新的ssh key: ssh-keygen -t rsa -b 4096 -C "[email protected]"

3. cat ~/.ssh/id_rsa.pub :获取ssh 内容

---创建远程仓库?(coding.net 上自动创建空远程仓库)

    本地创建远程仓库,与远程的仓库发生联系。

---创建本地仓库

    git init

--两个仓库关联(若无配置,本地push时报错,无push 目标)

git remote add origin [email protected]
此时若直接push报错:push default 未设置
git config --global push.default matching
git config --global push.default simple
运行 git push -u origin master (origin 是远程的仓库名,master 是远程的分支,本地只有一个仓库.git,没有名字,本地的仓库可以push到不同的远程仓库上
---覆盖之前设置的远程仓库路径
git remote set -url origin git@....
--git clone
远程操作的第一步,通常是从远程主机克隆一个版本库,这时就要用到git clone命令。
$ git clone <版本库的网址>

    比如,克隆jQuery的版本库。

$ git clone https://github.com/jquery/jquery.git

---git pull/git fetch 的区别
git pull= git fetch+ git metch
git pull 是把内容从网上拉下来,并merge到本地的master分支中。
fetch是把内容从网上拉下来放到本地仓库里,但是并不放到工作目录里。使用fetch可以自己使用merge功能,eg. git merge origin/master

--新建远程分支
git branch b1 :新建本地分支
git checkout b1 :切换到b1分支
git push origin b1 :push 远程分支
git checkout master
git merge b1 --合并分支内容到master
git push :push master
git push origin :b1 --删除远程分支(把一个空的内容Push到b1)
git branch -d b1 --删除本地分支

总结: 本地新建分支:git branch 分支名
git push origin xxx:yyy xxx:本地分支名称 yyy:远程分支名 push分支到远程

---新建tag(tag作用:给commit 起名字)
新建tag命令:git tab t1
push tag命令:git push --tags
回到打tag状态:git checkout t1

tag作用:方便快速查找一个commit。给一个重要的时刻打一个标记,方便以后回到这里来。

--git其他命令
1.git reset HEAD
2.git reset --hard HEAD
eg . git pull
反悔:1.git reset 1a45dd :所有这个commit之后的内容都认为是变更内容。即工作目录内容没变,
.git仓库认为最新的内容就是我reset的那个commit。
2.git reset --hard la45dd: 真的反悔了,改变了工作目录的内容。
git push --force :可以强制push 2的改动,有危险。

 

你可能感兴趣的:(git操作)