Git 命令简单罗列
源教程出自 廖雪峰的官方网站 https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
整理出运行命令,不做过多解释!
git 简单整理:
1.down
https://git-scm.com/download/win
mirror https://pan.baidu.com/s/1kU5OCOB#list/path=%2Fpub%2Fgit
2.install
install
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
3.create version
$ mkdir learngit
$ cd learngit
$ pwd
out:/Users/michael/learngit ####window下不要中文与空格
$ git init
out:Initialized empty Git repository in /Users/michael/learngit/.git/
4.commit
$ git add readme.txt
$ git commit -m "wrote a readme file"
out:[master (root-commit) eaadf4e] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
5.status look
$ git status
$ git diff readme.txt
6.back version
$ git log
$ git log --pretty=oneline
$ git reset --hard HEAD^ ####回退到上一版本
$ git reset --hard 1094a
$ git reflog
7.look diff
$ git diff HEAD -- readme.txt
8.cancle change
$ git checkout -- readme.txt
$ git reset HEAD readme.txt ####把暂存区的修改撤销掉(unstage),重新放回工作区
9.remove
$ git rm test.txt
$ git commit -m "remove test.txt"
$ git checkout -- test.txt #####checkout
10.github version
$ ssh-keygen -t rsa -C "youremail@example.com" ####id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374385852170d9c7adf13c30429b9660d0eb689dd43a000
11. add remote repertory
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013752340242354807e192f02a44359908df8a5643103a000
$ git remote add origin git@github.com:michaelliao/learngit.git
$ git push -u origin master #### init first
$ git push origin master #### after
12.clone
$ git clone git@github.com:michaelliao/gitskills.git
$ cd gitskills
$ ls
out:README.md
13.branch
####查看分支: git branch
####创建分支: git branch <name>
####切换分支: git checkout <name>
####创建+切换分支: git checkout -b <name>
####合并某分支到当前分支: git merge <name>
####删除分支: git branch -d <name>
$ git checkout -b issue-101
$ git add readme.txt
$ git commit -m "fix bug 101"
$ git checkout master
$ git merge --no-ff -m "merged bug fix 101" issue-101
$ git checkout dev
14.conflict
$ git checkout -b feature1
$ git log --graph命令可以看到分支合并图。
15.通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息 ,下面我们实战一下--no-ff方式的git merge
$ git merge --no-ff -m "merge with no-ff" dev ####注意--no-ff参数,表示禁用Fast forwar
16.当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,当前正在dev上进行的工作还没有提交
$ git stash ####把当前工作现场“储藏”起来,等以后恢复现场后继续工作
$ git stash list
$ git stash pop
$ git stash apply stash@{0}
17.通过git branch -D <name>强行删除。
18.多人协作
$ git remote
$ git remote -v
$ git push origin master
$ git push origin dev
$ git clone git@github.com:michaelliao/learngit.git
$ git branch
$ git checkout -b dev origin/dev
$ git add env.txt
$ git commit -m "add env"
$ git push origin dev
other change one thing
$ git branch --set-upstream-to=origin/dev dev
$ git pull
#### 手动解决冲突后提交
$ git commit -m "fix env conflict"
$ git push origin dev
####查看远程库信息,使用git remote -v;
####
####本地新建的分支如果不推送到远程,对其他人就是不可见的;
####
####从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
####
####在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
####
####建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
####
####从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
19.创建标签
$ git branch
$ git tag v1.0
$ git tag
$ git log --pretty=oneline --abbrev-commit
$ git tag v0.9 f52c633
$ git show v0.9
$ git tag -a v0.1 -m "version 0.1 released" 1094adb
####命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
####
####命令git tag -a <tagname> -m "blablabla..."可以指定标签信息;
####
####命令git tag可以查看所有标签。
20.操作标签
####命令git push origin <tagname>可以推送一个本地标签;
####
####命令git push origin --tags可以推送全部未推送过的本地标签;
####
####命令git tag -d <tagname>可以删除一个本地标签;
####
####命令git push origin :refs/tags/<tagname>可以删除一个远程标签。
21. 使用码云
$ git remote add origin git@gitee.com:liaoxuefeng/learngit.git
$ git remote -v
$ git remote rm origin
$ git remote add origin git@gitee.com:liaoxuefeng/learngit.git
$ git remote -v
$ git remote rm origin
$ git remote add github git@github.com:michaelliao/learngit.git
$ git remote add gitee git@gitee.com:liaoxuefeng/learngit.git
$ git remote -v
$ git push github master
$ git push gitee master
22.color
$ git config --global color.ui true
23.忽略特殊文件 特殊的.gitignore文件
$ git add -f App.class
$ git check-ignore -v App.class
####忽略某些文件时,需要编写.gitignore;
####.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!
24.配置别名
$ git config --global alias.st status
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
$ git ci -m "bala bala bala..."
$ git config --global alias.unstage 'reset HEAD'
$ git unstage test.py
$ git reset HEAD test.py
$ git config --global alias.last 'log -1'
$ git last
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
####配置文件
####配置Git的时候,加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。
####
####配置文件放哪了?每个仓库的Git配置文件都放在.git/config文件中:
25.搭建Git服务器 https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579bc4b458f044ce7afed3df579123eca000
$ sudo apt-get install git
$ sudo adduser git
####收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个
$ sudo git init --bare sample.git
$ sudo chown -R git:git sample.git
$ git:x:1001:1001:,,,:/home/git:/bin/bash
$ git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
$ git clone git@server:/srv/sample.git