Git入门教程

git 初始化:

git config --global user.name "UserName"//设置你的名字
git config --global user.email "user@gmail.com"//设置你的email

用户名和email将是你提交commit时的签名。执行了上面的命令后,会在/home/user下建立一个叫.gitconfig 的文件(该文件为隐藏文件,需要使用ls -al查看到). 可以使用vim查看文件内容。

git仓库

clone一个git仓库:

git clone https://github.com/example/project //克隆完成后本地会多一个相应文件夹

初始化一个本地仓库:

cd /home/user/
mkdir project
cd project
git init  //初始化 

之后会输出:

Initialized empty Git repository in /home/shiyanlou/project/.git/

一般的工作流程:

git的基本流程:

  1. 创建或修改文件
  2. 使用git add命令添加新创建或修改的文件到本地的缓存区(Index)
  3. 使用git commit命令提交到本地代码库
  4. (可选,有的时候并没有可以同步的远端代码库)使用git push命令将本地代码库同步到远端代码库
cd project  
touch file file1 //创建一个文件
git status  //查看当前git仓库的状态
git add file file1//将file添加到缓存区
git status  //再次查看git仓库状态
git diff --cached   //查看缓存区哪些文件被修改,之后q退出
git commit -m "add 1 file"//git commit 将缓存区文件提交到本地库,-m后内容为本次修改注释
git rm file1  //删除file1
git push origin master //本地仓库同步远程服务器,之后需要输入用户名和密码

git rm命令删除后会自动将已删除文件的信息添加到缓存区,git commit提交后就会将本地仓库中的对应文件删除

分支与合并

一个Git仓库可以维护很多开发分支。

$ git branch experimental //运行git branch命令可以查看当前的分支列表,以及目前的开发环境处在哪个分支上:
$ git branch
 experimental
* master
$ git checkout experimental //切换分支
Switched to branch 'experimental'

# 修改文件file1
$ echo "update" >> file1
# 查看当前状态
$ git status
# 添加并提交file1的修改
$ git add file1
$ git commit -m "update file1"
# 查看file1的内容
$ cat file1  //查看file1内容
test
update
# 切换到master分支
$ git checkout master

#查看下file1中的内容会发现刚才做的修改已经看不到了。因为刚才的修改时在experimental分支下,现在切换回了master分支,目录下的文件都是master分支上的文件了

现在可以在master分支下再作一些不同的修改:
========================

# 修改文件file2
$ echo "update again" >> file2
# 查看当前状态
$ git status
# 添加并提交file2的修改
$ git add file2
$ git commit -m "update file2 on master"
# 查看file2的内容
$ cat file2
test
update again

#这时,两个分支就有了各自不同的修改,分支的内容都已经不同,如何将多个分支进行合并呢?

可以通过下面的git merge命令来合并experimental到主线分支master:
=============================================

# 切换到master分支
$ git checkout master
# 将experimental分支合并到master
$ git merge  -m 'merge experimental branch' experimental

#-m参数仍然是需要填写合并的注释信息。

#由于两个branch修改了两个不同的文件,所以合并时不会有冲突,执行上面的命令后合并就完成了。

如果有冲突,比如两个分支都改了一个文件file3,则合并时会失败。首先我们在master分支上修改file3文件并提交:
============================================================

# 切换到master分支
$ git checkout master
# 修改file3文件
$ echo "master: update file3" >> file3
# 提交到master分支
$ git commit -a -m 'update file3 on master'

#然后切换到experimental,修改file3并提交:

# 切换到experimental分支
$ git checkout experimental
# 修改file3文件
$ echo "experimental: update file3" >> file3
# 提交到experimental分支
$ git commit -a -m 'update file3 on experimental'

#切换到master进行合并:

$ git checkout master
$ git merge experimental
Auto-merging file3
CONFLICT (content): Merge conflict in file3
Automatic merge failed; fix conflicts and then commit the result.

#合并失败后先用git status查看状态,会发现file3显示为both modified,查看file3内容会发现:

$ cat file3
test
<<<<<<< HEAD
master: update file3
=======
experimental: update file3
>>>>>>> experimental

#可以看到冲突的内容都被添加到了file3中,我们使用vim编辑这个文件,去掉git自动产生标志冲突的<<<<<<等符号后,根据需要只保留我们需要的内容后保存,然后使用git add file3和git commit命令来提交合并后的file3内容,这个过程是手动解决冲突的流程。

# 编辑冲突文件
$ vim file3
# 提交修改后的文件
$ git add file3
$ git commit -m 'merge file3'

#当我们完成合并后,不再需要experimental时,可以使用下面的命令删除:

$ git branch -d experimental  //git branch –D强制删除某分支

如果你觉得你合并后的状态不如意,放弃之前的合并,你可以用命令git reset --hard HEAD^回到合并之前的状态

日志

git log //显示所有提交,输入q退出,也可以用get help log查看更多选项
git log --stat  //会显示在每个提交(commit)中哪些文件被修改了, 这些文件分别添加或删除了多少行内容

git log --pretty=oneline //--pretty 参数可以使用若干表现格式,如oneline
git log --pretty=short

#也可用medium,full,fuller,email 或raw。 如果这些格式不完全符合你的需求, 你也可以用 --pretty=format参数定义格式。

#--graph 选项可以可视化你的提交图(commit graph),会用ASCII字符来画出一个很漂亮的提交历史(commit history)线:

git log --graph --pretty=oneline

#按默认情况,提交会按逆时间顺序显示,可以指定--topo-order参数,让提交按拓扑顺序来显示(就是子提交在它们的父提交前显示

git log --pretty=format:'%h : %s' --topo-order --graph

命令小结:

git config:配置相关信息
git clone:复制仓库
git init:初始化仓库
git add:添加更新内容到索引中
git diff:比较内容
git status:获取当前项目状况
git commit:提交
git branch:分支相关
git checkout:切换分支
git merge:合并分支
git reset:恢复版本
git log:查看日志

以上内容均摘抄自于实验楼网站:https://www.shiyanlou.com/courses/4/labs/21/document

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值