Git的使用教程

Git的使用教程

一.Git的基本命令
1.Git拥有的三个阶段:工作区,暂存区,Git目录。

如果Git目录中保存着特定版本的文件,就属于已提交状态,如果文件已经修改并放入暂存区,就属于已暂存。如果自上次检出后,作了修改但还没有放到暂存区域,就是已修改状态。

2.Git前的配置
1./etc/gitconfig文件,包含系统上每一个用户及他们仓库的通用配置。如果在执行git config时带上 --system选项,那么它就会读写该文件中 的配置变量。
2.~/.gitconfig:只针对当前用户。你可以传递–global选项让Git读写此文件,这会对你系统上所有的仓库生效。
3.当前使用仓库的Git目录中的config文件(.git/config):针对该仓库。你可以传递–local选项让Git强制读写此文件。

每一个级别会覆盖上一级别的配置。
当有多个账号信息时,为了区分不同账号提交的记录。可以配置global级为常用的用户和邮箱信息。对于不常用的,可以在对应的版本库里配置单独的用户和邮箱信息的。

4.生成ssh秘钥:
ssh-keygen -t rsa -C “your_email@example.com”
然後全部选择默认即可。
最后就会在用户目录下生成.ssh文件夹和id_rsa id_rsa.pub known_hosts文件,id_rsa.pub文件就是我们需要公钥文件。

3.git的配置信息
删除git的配置信息
git config --unset --global core.editor
查看git的配置信息
git config user.name
如:
$ git config --global user.name “username”
$ git config --global user.email “email”

4.获取Git仓库
1.将尚未进行版本控制的本地目录转换为Git仓库。
cd /home/my_projection
git init
2.从其他服务器clone一个已存在的Git仓库。
git clone命令时侯,默认配置下远程Git仓库中的每一个文件的每一个版本都将被拉取下来的。
clone远程仓库的时候,自定义本地仓库的名字,你可以通过额外的参数指定新的目录名:
git clone https://github.com/libgit2 mylibgit

5.忽略文件
直接在.git所在的目录下建立一个文件.gitignore文件,列出要忽略的文件的模式。
如:
cat .gitignore
log/*.log
表示忽略log目录下所有的以.log结尾的文件。
$ git add test.log
The following paths are ignored by one of your .gitignore files:
log/test.log
Use -f if you really want to add them.

格式:
忽略所有的 .a 文件
*.a
但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a
只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
/TODO
忽略任何目录下名为 build 的文件夹
build/
忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt
忽略 doc/ 目录及其所有子目录下的 .pdf 文件
doc/**/*.pdf

6.git diff
查看尚未暂存的文件更新了哪些部分,不加参数直接输入git diff;
查看已暂存的将要添加到下次提交里的内容,可以使用git diff --staged(git diff --cached)命令。这条命令将比对已暂存文件与最后一次提交的文件差异。
1.git查看有哪些比对工具可以设置命令
git difftool --tool-help
2.设置比对工具
git config --global diff.tool bc3
git config --global difftool.bc3.path “c:/bcompare.exe”
3.设置合并工具
git config --global merge.tool bc3
git config --global mergetool.bc3.path “c:/bcompare.exe”
4>直接修改.gitconfig文件
然后直接使用git difftool就可以了的

7.移除文件
1.从已跟踪文件清单中移除(从暂存区移除)
rm deletefile
git rm deletefile(记录此次移除文件的操作)
git commit -m “delete file”
2.把文件从Git仓库中删除,但是仍然希望保留在当前工作目录中,换句话说,想让文件保留在磁盘,但是并不想让git继续跟踪。
git rm --cached deletefile

8.查看提交历史
git log -p显示每次提交所引入的差异,也可以使用-1表示只显示最近一次的提交。
git log --pretty=oneline 只显示提交的校验和与commit。

9.撤销对文件的修改
对于在工作目录下修改过的文件,使用git checkout file.txt.接着你对那个文件在本地的任何修改都会消失。Git会用最近提交的版本覆盖掉它的。

10.添加远程仓库
git remote -v
git remote add
如:
git init
git remote add pb https://github.com/paulboone/ticgit
如果想拉取pb仓库中有但你没有的信息,可以运行git fetch pb

11.本地分支和远程分支进行关联
.git/config下
[branch “branch1”]
remote = origin
merge = refs/heads/master

12.推送到远程分支
git push origin master

13.查看某个远程仓库
git remote show origin

14.远程仓库的重命名和删除
git remote rename pb paul
git remote remove

15.标签管理
1.列出标签
git tag
2.附注标签
git tag -a v1.4 -m “my version 1.4”
查看附注标签
git show v1.4
3.轻量标签
git tag v1.4
git show v1.4
4.后期打标签
git tag -a v1.2 shavalue
5.git push命令并不会传送标签到远程仓库服务器上。
必须在创建标签后显式地推送标签。
git push origin
一次性推送多次标签
git push origin --tags
6.删除标签
git tag -d
远程库中的标签移除:
git push :refs/tags/来更新远程仓库
git push origin --delete 也可以更新远程仓库

16.分支管理
1.分支创建
git branch testing
2.查看下各个分支当前所指的对象
git log --oneline --decorate
3.分支切换
git checkout testing
4.新建分支并切换
git checkout -b issue1
相当于git branch issue1
git checkout issue1
5.删除分支
git branch -d issue1
6.跟踪分支
从一个远程跟踪分支检出一个本地分支会自动创建所谓的”跟踪分支”,跟踪分支是与远程分支有直接关系的本地分支。如果在一个跟踪分支上输入git pull,Git能自动地识别
去哪个服务器上抓取,合并到那个分支。
git checkout -b /
同理
git checkout --track origin/serverfix
7.删除远程分支
git push origin --delete serverfix
8.查看远程分支
git branch -r
9.远程分支check到本地并重命名
先git branch -a 查看远程分支名
git checkout -b local branch name remote branch name
10.远程分支与本地分支的对应关系
git branch -vv

17.git stash详解
1.git stash能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录。
2.git stash list
3.git stash pop
将当前stash中的内容弹出,并应用到当前分支对应的工作目录。
4.git stash apply
将堆栈中的内容应用到当前目录,不同于git stash pop,该命令不会将内容从堆栈中删除,可以多次应用于当前目录中去。
git stash apply stashname(如stash@{1})指定恢复哪个stash到当前的工作目录中。
5.git stash drop stashname
从堆栈中移除某个指定的stash
6.git stash clear
清除堆栈中的所有内容
7.git stash show
查看堆栈中最新保存的stash和当前目录的差异。
git stash show stashname 查看指定的stash和当前的差异
git stash show -p 查看详细的不同
8.git stash save “name”

18.git push详解
git push一般形式为git push <远程主机名> <本地分支名> <远程分支名>
如 git push origin master:refs/for/master 就是将本地的master分支推送到远程主机origin上的对应master分支。
第一个master是本地分支名, 第二个master是远程分支名。
1.git push origin master
如果远程分支被省略,如上则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建.

2.git push origin : refs/for/master
如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支,等同于 git push origin --delete master

3.git push
如果当前分支只有一个远程分支,那么主机名都可以省略,形如 git push,可以使用git branch -r ,查看远程的分支名

4.refs/for
refs/for 的意义在于我们提交代码到服务器之后是需要经过code review 之后才能进行merge的,而refs/heads 不需要.

5.origin远程主机名可以通过git remote -v进行查看.

6.服务器提交代码捷径:
先用git remote -v 看下远程主机名
确定是自己要提交的主机路径后,可以直接使用origin代替此路径,向远程分支提代码
git push origin HEAD:refs/for/远程分支名

7.删除远程分支(慎重操作)
git push origin :refs/for/远程分支名

解决方法:
1> 基于该分支最后一笔提交的commit号去创建一个分支
git branch 本地分支名 commitId
2>恢复分支
git push origin 本地分支名:远程分支名 -f

8.github上20210831之后下载代码只能用ssh的方式进行
如:
git clone git@github.com:DannyKim2017/CoolWeather.git
http下载代码的话就需要配置token.

9.git push <远程主机名> <本地分支名> <远程分支名>
其中远程主机名可以在切换到对应的分支后,使用git remote 命令查看远程主机名

19.撤销已提交的操作
1.git reset HEAD~1
撤销已经提交的文件到暂存区
2.git checkout HEAD filename
撤销指定的未提交文件的修改内容

20.git blame的使用
追溯一个指定文件的历史修改记录。
git blame filename
指定从start行到end行的历史修改记录
git blame -L start,end filename

21.针对cherrypick下来的代码与本地代码有冲突,将cherrypick提交的patch中有冲突的代码删除掉的快捷方式
git cherry pick…
git reset HEAD
撤销已经提交的文件到暂存区
git checkout 相应删除的文件
此时再次提交即可

22.repo的简单使用
拉repo
repo init -u ssh:/ -b -m
拉代码
repo sync -c --no-tags -j8
同步所有仓库分支为master
repo start master --all

23.git其他使用
提交已跟踪文件
git add -u

24.删除未跟踪的文件

# 删除 untracked files
git clean -f
 
# 连 untracked 的目录也一起删掉
git clean -fd
 
# 连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)
git clean -xfd
 
# 在用上述 git clean 前,墙裂建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删
git clean -nxfd
git clean -nf
git clean -nfd

24.查看单个文件的修改内容
git log -p 文件名

25.revert某个提交
git revert
如果没有gedit的话,需要
git revert --no-edit

26.如果当前git环境下没有gedit,可以修改git支持的编辑器去处理

遇到的问题:

hint: Waiting for your editor to close the file... Failed to register: GDBus.Error:org.freedesktop.DBus.Error.NoReply: Message recipient disconnected from message bus without replying
error: There was a problem with the editor 'gedit -w'.
Please supply the message using either -m or -F option.

运行如下命令查看git默认的编辑器:
git config --global --list

接下来设置git默认的编辑器:
git config --global core.editor vim 即可

27.git show 提交号查看该笔提交的修改点

git show 348069b7ae61d3fec8391318dafe20fec34f3027
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值