1、初始化一个Git仓库,使用git init命令。
2、添加文件到Git仓库,分两步:
第一步,使用命令git add ,注意,可反复多次使用,添加多个文件;
第二步,使用命令git commit,完成。
3、查看工作区的状态,使用git status命令。
如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
4、版本切换
Git允许我们在版本的历史之间切换,使用命令git reset --hard commit_id。
切换前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来某个版本,用git reflog查看命令历史
5、git add命令把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。
6、撤销修改
1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
7、删除文件
git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么永远不用担心误删,但是只能恢复文件到最新版本,会丢失最近一次提交后修改的内容。
8、远程仓库
创建SSH Key:$ ssh-keygen -t rsa -C "youremail@example.com"
关联远程仓库:git remote add origin git@github.com:andersjing/learngit.git
把本地库的所有内容推送到远程库上:
初次:$ git push -u origin master
再次:$ git push origin master
9、要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。
![](https://img-blog.csdn.net/20140729203145219)
10、分支管理命令:
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout -b name
合并某分支到当前分支:git merge name
删除分支:git branch -d name
11、合并冲突
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
用git log --graph命令可以看到分支合并图。
--no-ff参数,禁用“Fast forward”:git merge --no-ff -m "merge with no-ff" dev
12、保存现场
把当前工作现场“储藏”起来,等以后恢复现场后继续工作:git stash
查看工作现场:git stash list
恢复现场:
一是用git stash apply stash@{0} 恢复,但是恢复后,stash内容并不删除,需用git stash drop stash@{0} 来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删除;
13、要丢弃一个没有被合并过的分支,可以通过git branch -D name强行删除。
14、多人协作的工作模式:
首先,可以试图用git push origin branch-name推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
15、标签
命令git tag name用于新建一个标签,默认为HEAD,也可以指定一个commit id;
命令git tag查看标签;(标签不是按时间顺序列出,而是按字母排序的。)
命令git show tagname可以看到说明文字;
删除标签:$ git tag -d tagname;
推送某个标签到远程:git push origin tagname;
一次性推送全部尚未推送到远程的本地标签:git push origin --tags;
标签已经推送到远程,要删除远程标签先从本地删除:$ git tag -d v0.9;然后从远程删除:git push origin :refs/tags/v0.9;
16、github使用
在GitHub上,可以任意Fork开源仓库;
然后,从自己的账号下clone:git clone git@github.com:andersjing/bootstrap.git ;
可以推送pull request给官方仓库来贡献代码;
17、在Git工作区的根目录下创建一个.gitignore文件,把要忽略的文件名填进去,Git就会自动忽略这些文件。
18、配置快捷命令:git config --global alias.shortname ordername
19、搭建Git服务器
第一步,安装git:$ sudo apt-get install git
第二步,创建一个git用户,用来运行git服务:$ sudo adduser git
第三步,创建证书登录:收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
第四步,初始化Git仓库:先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:$ sudo git init --bare sample.git
Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git:$ sudo chown -R git:git sample.git
第五步,禁用shell登录:出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:git:x:1001:1001:,,,:/home/git:/bin/bash
改为:git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。
第六步,克隆远程仓库:
2、添加文件到Git仓库,分两步:
第一步,使用命令git add ,注意,可反复多次使用,添加多个文件;
第二步,使用命令git commit,完成。
3、查看工作区的状态,使用git status命令。
如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
4、版本切换
Git允许我们在版本的历史之间切换,使用命令git reset --hard commit_id。
切换前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来某个版本,用git reflog查看命令历史
5、git add命令把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。
6、撤销修改
1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
7、删除文件
git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么永远不用担心误删,但是只能恢复文件到最新版本,会丢失最近一次提交后修改的内容。
8、远程仓库
创建SSH Key:$ ssh-keygen -t rsa -C "youremail@example.com"
关联远程仓库:git remote add origin git@github.com:andersjing/learngit.git
把本地库的所有内容推送到远程库上:
初次:$ git push -u origin master
再次:$ git push origin master
9、要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。
$ git clone git@github.com:andersjing/gitskills.git
如果想切换到某一个子分支,可以使用:git checkout -b child_branch origin/child_branch
10、分支管理命令:
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout -b name
合并某分支到当前分支:git merge name
删除分支:git branch -d name
11、合并冲突
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
用git log --graph命令可以看到分支合并图。
--no-ff参数,禁用“Fast forward”:git merge --no-ff -m "merge with no-ff" dev
12、保存现场
把当前工作现场“储藏”起来,等以后恢复现场后继续工作:git stash
查看工作现场:git stash list
恢复现场:
一是用git stash apply stash@{0} 恢复,但是恢复后,stash内容并不删除,需用git stash drop stash@{0} 来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删除;
13、要丢弃一个没有被合并过的分支,可以通过git branch -D name强行删除。
14、多人协作的工作模式:
首先,可以试图用git push origin branch-name推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
15、标签
命令git tag name用于新建一个标签,默认为HEAD,也可以指定一个commit id;
命令git tag查看标签;(标签不是按时间顺序列出,而是按字母排序的。)
命令git show tagname可以看到说明文字;
删除标签:$ git tag -d tagname;
推送某个标签到远程:git push origin tagname;
一次性推送全部尚未推送到远程的本地标签:git push origin --tags;
标签已经推送到远程,要删除远程标签先从本地删除:$ git tag -d v0.9;然后从远程删除:git push origin :refs/tags/v0.9;
16、github使用
在GitHub上,可以任意Fork开源仓库;
然后,从自己的账号下clone:git clone git@github.com:andersjing/bootstrap.git ;
可以推送pull request给官方仓库来贡献代码;
17、在Git工作区的根目录下创建一个.gitignore文件,把要忽略的文件名填进去,Git就会自动忽略这些文件。
18、配置快捷命令:git config --global alias.shortname ordername
19、搭建Git服务器
第一步,安装git:$ sudo apt-get install git
第二步,创建一个git用户,用来运行git服务:$ sudo adduser git
第三步,创建证书登录:收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
第四步,初始化Git仓库:先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:$ sudo git init --bare sample.git
Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git:$ sudo chown -R git:git sample.git
第五步,禁用shell登录:出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:git:x:1001:1001:,,,:/home/git:/bin/bash
改为:git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。
第六步,克隆远程仓库:
现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:$ git clone git@server:/srv/sample.git
常用命令总结
学习地址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000