flyEn'blog

Git学习笔记

GIT

git全局设置及生成密钥

1
2
3
git config --global user.name 'fhy'
git config --global user.email '1005805748@qq.com'
ssh-keygen -t rsa -C 1005805748@qq.com

Your identification has been saved in /home/fhy/.ssh/id_rsa.
Your public key has been saved in /home/fhy/.ssh/id_rsa.pub.

1
cat /home/fhy/.ssh/id_rsa.pub

创建git仓库

创建一个初始化本地仓库

1
git init

ls -al 可看到多了个.git 文件

查看git状态

1
git status   # git status -s 简略

忽略特殊文件
vim .gitignore 进入gitignore 文件下编辑,放入想要忽略的文件名即可
git add把文件添加到仓库缓存区,git commit把文件提交到仓库

1
2
git add .  # add所有      git add file_name  # add单个
git commit -m 'first commit'

查看被修改的内容

1
git diff

查看历史记录

1
git log

版本回退(上一个版本HEAD^,上上个版本HEAD^^,往上100个HEAD~100)

1
git reset --hard HEAD^

如果再想回去回退前的版本,输入对应的commit id(前几位)

1
git reset --hard 3628452

删除一个文件rm test.txt,如果确认从版本库中删除,那就git rm并且git commit;如果删错,可以从版本库恢复git checkout -- test.txt

撤销未提交的修改

1
git checkout .

远程仓库

把本地仓库与远程仓库关联

1
git remote add origin https://git.oschina.net/www.fhyblog.com/article.git

推送(第一次需加-u)

1
git push -u origin master

查看远程库的信息

1
2
git remote
git remote -v # 更详细

创建远程origin的dev分支到本地

1
git checkout -b dev origin/dev

修改并push到远程

1
2
git commit -m "add .."
git push origin dev

另一个人从远程git pull,需设置本地dev分支与远程origin/dev分支的链接

1
git branch -set-upstream dev origin/dev

创建与合并分支

创建dev分支并切换到dev分支

1
git checkout -b dev

查看当前分支(当前分支前面会标一个*号)

1
git branch

切换回master后,将指定分支dev合并到master主分支上

1
2
git checkout master
git merge dev

删除dev分支

1
git branch -d dev

看分支合并图

1
git log --graph --pretty=oneline --abbrev-commit

bug分支

如果工作进行到一般还没法提交,出现Bug需要马上修复,stash将当前工作储藏起来,等以后恢复现场后继续工作。

1
git stash

创建临时分支开始修复Bug,修复完成后切换到master分支,完成合并删除分支

1
git merge --no-ff -m "<description>" <branch_name>

还原之前的工作现场

1
2
3
git stash list  # 查看
git stash apply # 恢复但是stash内容并不删除,需要git stash drop来删除
git stash pop # 恢复的同时把stash内容也删了

也可以多次stash,先查看之后恢复指定的stashgit stash apply stash@{0}

标签管理

切换到需要打标签的分支上

1
git tag <name>   # 创建v1.0的标签

查看历史提交的commit id,对应打标签

1
2
git log --pretty=oneline --abbrev-commit
git tag v0.9 6224937

查看标签信息

1
git show <tagname>

创建带有说明的标签

1
git tag -a <tagname> -m '<addtext>' <commit_id>

用PGP签名标签

1
git tag -s <tagname> -m '<addtext>' <commit_id>

#####操作标签
删除标签

1
git tag -d <tagname>

推送v1.0标签到远程

1
git push origin v1.0

推送全部尚未推送到远程的标签

1
git push origin --tags

删除远程标签

1
2
git tag -d <tagname>  # 本地删除
git push origin :refs/tags/<tagname>

配置别名

例:
将status设置成st

1
git config --global alias.st status

co表示checkout,ci表示commit,br表示branch

1
2
3
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch

–global参数是全局参数

配置一个git last,显示最后一次提交信息

1
git config --global alias.last 'log -1'  # git last

配置log

1
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/config
例:

1
2
3
4
5
6
7
   co = checkout
ci = commit
br = branch
st = status
[user]
name = Your Name
email = your@email.com

搭建git仓库(略)

Fork me on GitHub