git学习笔记

文章目录

      • 0. 学习资料
      • 1. git工作流
      • 2. 创建/克隆仓库
      • 3. 添加/取消/移动/删除文件
      • 4. 查看当前项目的状态
      • 5. 查看文件的改动信息
      • 6. 提交到仓库
      • 7. 分支管理(Branch)
      • 8. 查看提交日志
      • 9. git标签
      • 10. 远程仓库协同工作
        • 10.1 提取远程仓库
        • 10.2 推送到远程仓库
        • 10.3 删除远程仓库
        • 10.3 删除远程仓库

0. 学习资料

感谢菜鸟教程:菜鸟教程

git官网:git docs

1. git工作流

一般工作流程如下:

  • 克隆 Git 资源作为工作目录。
  • 在克隆的资源上添加或修改文件。
  • 如果其他人修改了,你可以更新资源。
  • 在提交前查看修改。
  • 提交修改。
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

2. 创建/克隆仓库

初始化当前目录做为仓库:

git init

初始化指定的目录为仓库:

git init path

克隆仓库:

git clone [url]
git clone [url] [path]  # 克隆到指定目录

3. 添加/取消/移动/删除文件

跟踪该目录下的文件,把其纳入版本控制:

git add *.c	    # 添加所有以.c结尾的文件
git add	README  # 添加README文件
git add * 		# 添加所有文件

也用reset可以将某个文件清除出缓存区:

git reset HEAD	# 取消所有已经缓存的内容
git reset HEAD filename # 取消指定文件缓存的内容

使用mv以移动或重命名一个文件、目录、软连接:

git mv README README.md		# 重命名一个文件

要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除:

git rm filename			# 删除一个文件
git rm -f filename		# 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项-f
git rm --cache filename # 把文件从跟踪清单中移除,但是仍希望保留在当前的工作目录中
git rm -f * 			# 删除整个目录中的文件和子目录

4. 查看当前项目的状态

git status -s

A xxx.x 表示已经加入到缓存中

AM xxx.x 表示已经加入到缓存中又有了改动

?? xxx.x 表示已经该文件还没有加入到缓存中

AD xxx.x 表示已经加入到缓存中并做了删除操作

5. 查看文件的改动信息

git diff			# 尚未缓存的改动
git diff --cached	# 查看已缓存的改动
git diff HEAD		# 查看已缓存的与未缓存的所有改动
git diff --stat		# 显示摘要而非整个diff

6. 提交到仓库

在提交之前,git需要为你的每一次提交都记录你的名字和邮箱,所以要先配置

git config --global user.name "xxx"
git config --global user.email [email protected]

再进行提交

git commit						# 会打开一个vim让你填写注释
git commit -m "annotation"		# -m可以为本次提交添加注释
git commit -a					# 可以跳过git add,直接提交所有改动过的文件
git commit -am "annotation"		# 可添加注释

7. 分支管理(Branch)

创建分支:

git branch 						# 查看分支
git branch newBranchName		# 新建分支
git checkout newBranchName		# 切换分支
git checkout -b newBranchNane	# 新建分支,并直接切换到该分支

删除分支:

git branch -d branchName

合并分支:

git merge branchName

合并时的冲突处理:

<<<<<<< HEAD
master modified!

=======
test modified!!
>>>>>>> test

冲突的内容需要手动修改!!!,修改完成之后使用add告诉git文件冲突处理完毕:

git add test.txt			# 通过add,告诉git冲突解决完毕
git commit -m "merge"		# 然后提交, (master|MERGING)就会重新变成(master)

8. 查看提交日志

git log 							# 详细日志
git log --oneline					# 简洁日志
git log --graph						# 以图形化的方式展示工作何时分叉,何时合并
git log --reverse					# 逆向显示所有日志
git log --author=Name				# 只查找制定用户的提交日志
git log --before={2010-04-18}		# 只显示2010-04-18之前的日志
git log --since={2010-04-18}		# 只显示从2010-04-18开始的日志
git log --until={2010-04-18}		# 只显示到2010-04-18的日志
git log --after={2010-04-18}		# 只显示2010-04-18之后的日志
git log --decorate					# 查看log中记录的标签

9. git标签

​ 如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。比如说,我们想为我们的 runoob 项目发布一个"1.0"版本。 我们可以用 git tag -a v1.0 命令给最新一次提交打上(HEAD)"v1.0"的标签。

git tag 					# 查看所有tag
git tag -a "v1.0"			# 添加tag
git tag -a "v0.9" 15066d6	# 给某次提交补加tag
git log --decorate			# 查看log中记录的标签

10. 远程仓库协同工作

添加一个远程仓库:

git remote add [originName] [yourGithubUrl]		# 添加远程仓库
ssh-keygen -t rsa -C "yourEmailUsedinGithub"	# 生成ssh密钥

在本地会生成一个id_rsa.pub文件,复制其中的key,在github中settings->SSH and GPG keys->New SSH key建立密钥。

ssh -T [email protected]							# 验证是否成功,出现以下字样就是成功的
# Hi kabutohui! You've successfully authenticated, but GitHub does not provide shell access.

在本地初始化一个仓库,建立一个文件,进行提交:

git init
git add readme.md
git commit -m "first commit"

在github上新建一个仓库testgit,然后将本地仓库内容推送到远程仓库:

git remote add origin https://github.com/yourGithubName/testgit.git
git push -u origin master		# 将本地内容推送到远程仓库

10.1 提取远程仓库

# 方法一: 从远程仓库下载新分支与数据,执行完成之后需要执行git merge将远程分支合并到你当前分支
git fetch origin
# 方法二: 将远程仓库中的所有更新合并到当前分支
git merge origin/master		

10.2 推送到远程仓库

git push origin master		# master可以为本地的任意分支,origin是远程仓库

10.3 删除远程仓库

git remote rm origin	# origin远程仓库名称

程仓库

git push origin master		# master可以为本地的任意分支,origin是远程仓库

10.3 删除远程仓库

git remote rm origin	# origin远程仓库名称

你可能感兴趣的:(git学习笔记)