git客户端使用说明

下载地址

  • yum 安装

安装步骤

  1. 设置yum源,采用yum安装。

    epel

  2. 安装

    yum install -y git

  3. 安装生成主要文件

    /usr/bin/git

在这里插入图片描述

修改配置

  1. 配置一

    git config --global user.email “test@examle.com”
    git config --global user.name “kim”

命令参数说明

命令行参数说明备注
git init初始化仓库备注1
git add增加一文件至仓库 使用命令git add <file>,注意,可反复多次使用,添加多个文件,空格隔开,git add . (增加所有)备注2
git commit -m “message”提交至仓库并注明备注3
git status如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
git log用git log可以查看提交历史,以便确定要回退到哪个版本。
git diff查看不同之处
git reflog用git reflog查看命令历史,以便确定要回到未来的哪个版本。
git reset --hard commit_idHEAD^ HEAD^^

常用实例

关联github仓库
git remote add origin git@github.com:77437187/test.git (需要在github新增ssh公钥)
git remote add origin https://github.com/77437187/learngit.git 

git remote add origin http://用户名:密码@git-yw.wens.com.cn/193420/bigscreen-uwsgi.git


本地库的所有内容推送到远程库(本地库需要git commit)
git push -u origin master 

Git鼓励大量使用分支:
查看分支:git branch
[root@centos7-ali test]# git branch
* dev
  master



创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name> 命令用于合并指定分支到当前分支
删除分支:git branch -d <name>

访问
Quick setup — if you’ve done this kind of thing before
or

Get started by creating a new file or uploading an existing file. We recommend every repository include a README, LICENSE, and .gitignore.
…or create a new repository on the command line

echo "# test" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/77437187/test.git
git push -u origin master

…or push an existing repository from the command line

git remote add origin https://github.com/77437187/test.git
git push -u origin master


git clone git@github.com:77437187/gitlearn.git
git pull


------------------

git pull的作用是,从远程库中获取某个分支的更新,再与本地指定的分支进行自动merge。完整格式是:

$ git pull <远程库名> <远程分支名>:<本地分支名>

比如,取回远程库中的develop分支,与本地的develop分支进行merge,要写成:

git pull origin develop:develop

如果是要与本地当前分支merge,则冒号后面的<本地分支名>可以不写。

git pull origin develop

通常,git会将本地库分支与远程分支之间建立一种追踪关系。比如,在git clone的时候,所有本地分支默认与远程库的同名分支建立追踪关系。也就是说,本地的master分支自动追踪origin/master分支。因此,如果当前处于本地develop分支上,并且本地develop分支与远程的develop分支有追踪关系,那么远程的分支名可以省略:

git pull origin

其实,git pull 命令等同于先做了git fetch ,再做了git merge。即:
git fetch origin develop
git checkout develop
git merge origin/develop
分2部分
工作区   版本库(分 暂存区 和 master分支)


git init
vim t.txt
git add t.txt  ##放到暂存区
git commit -m 'first add files'

vim t.txt
git diff
git status
git log --pretty=oneline


注意: 修改内容如果没有提交, git reset没有提交的内容就会清空。

回退当前版本
git reset --hard HEAD




回退上一个版本
git reset --hard HEAD^

回退上上一个版本
git reset --hard HEAD^^

回退指定版本
git reset --hard 1094a

查找comit log 
$ git reflog
47a79b3 (HEAD -> master) HEAD@{0}: reset: moving to HEAD^
80d066d HEAD@{1}: reset: moving to HEAD^
fc93ae0 HEAD@{2}: reset: moving to HEAD
fc93ae0 HEAD@{3}: reset: moving to fc93ae00942b7ed531c7f41a91cc770565d28d5e
80d066d HEAD@{4}: reset: moving to HEAD
80d066d HEAD@{5}: reset: moving to HEAD^
fc93ae0 HEAD@{6}: reset: moving to HEAD
fc93ae0 HEAD@{7}: commit: 增加内容3
80d066d HEAD@{8}: commit: 增2.txt文件
47a79b3 (HEAD -> master) HEAD@{9}: reset: moving to HEAD^
325e40c HEAD@{10}: commit: add five
47a79b3 (HEAD -> master) HEAD@{11}: commit: 3
4b9fecb HEAD@{12}: commit: two
7b727ac HEAD@{13}: commit (initial): t1

193420@DESKTOP-MJ07HMN MINGW64 /e/wp (master)
$ git reset --hard fc93ae0
HEAD is now at fc93ae0 增加内容3

193420@DESKTOP-MJ07HMN MINGW64 /e/wp (master)
$ git reset --hard 80d066d
HEAD is now at 80d066d 增2.txt文件

193420@DESKTOP-MJ07HMN MINGW64 /e/wp (master)
$ git reset --hard fc93ae0
HEAD is now at fc93ae0 增加内容3

193420@DESKTOP-MJ07HMN MINGW64 /e/wp (master)


提交后,用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别:
$ git diff HEAD -- 2.txt
diff --git a/2.txt b/2.txt
index 4e01e77..2b4e87c 100644
--- a/2.txt
+++ b/2.txt
@@ -3,4 +3,7 @@
 3 增加内容3


-55555
\ No newline at end of file
+55555
+
+666   ####红色 与缓存区的区别
+777   #### master区别



git checkout -- file可以丢弃工作区的修改:

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。 (reset 回退版本不经过缓存区)

总之,就是让这个文件回到最近一次git commit或git add时的状态。

git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。


操作缓存区
git reset HEAD readme.txt
Git同样告诉我们,用命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区:


回退当前版本
git reset --hard HEAD


总结:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。


工作区删除文件:
rm 2.txt

之后版本库删除文件 
git rm 2.txt
git commit


删除错了恢复
git checkout -- 2.txt

关连方法一
关连远程库:(origin 为习惯名名, 表示为远程库)
git remote add origin git@github.com:michaelliao/learngit.git

git remote add origin https://gitee.com/kim2008/wp.git

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

git push -u origin master

##不要在在gitee上初始化仓库, push时报错
git push -f origin master (强制push 小心, 远程库完全更新)



从现在起,只要本地作了提交,就可以通过命令:
$ git push origin master


查询远程库信息
$ git remote  -v
origin  https://gitee.com/kim2008/wx.git (fetch)
origin  https://gitee.com/kim2008/wx.git (push)

查询远程对应关系
[root@master01 docker_file]# git branch -vv
* master 35abdd9 [gitee/master] initrepo

删除远程库
git remote rm origin


此处的“删除”其实是解除了本地和远程的绑定关系,并不是物理上删除了远程库。远程库本身并没有任何改动。要真正删除远程库,需要登录到GitHub,在后台页面找到删除按钮再删除。


关连方法二
如果在gitee上初始化了仓库, 那就直接
git clone https://gitee.com/kim2008/myrepo.git


分支:
创建分支
git checkout -b dev
$ git checkout -b dev
Switched to a new branch 'dev'
git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
$ git branch dev
$ git checkout dev
Switched to branch 'dev'
然后,用git branch命令查看当前分支:

$ git branch
* dev
  master
  
  git branch命令会列出所有分支,当前分支前面会标一个*号
  git checkout master 切换分支(一种命令两种用法)
  我们注意到切换分支使用git checkout <branch>,而前面讲过的撤销修改则是git checkout -- <file>,同一个命令,有两种作用,确实有点令人迷惑。
  
  新版本提供switch命令切换分支
  git switch -c dev
  
  -d删除分支
  $ git branch -d dev
Deleted branch dev (was b17d20e).
  
  合并分支
  git merge命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。
  
  
  当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

用git log --graph命令可以看到分支合并图。

  $ git add readme.txt 
$ git commit -m "conflict fixed"
[master cf810e4] conflict fixed

上传分支
git push origin master
git push origin dev

下载分支
$ git checkout -b dev origin/dev



因为你的小伙伴的最新提交和你试图推送的提交有冲突,解决办法也很简单,Git已经提示我们,先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送:

$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=origin/<branch> dev
git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:

$ git branch --set-upstream-to=origin/dev dev
Branch 'dev' set up to track remote branch 'dev' from 'origin'.
再pull:


创建标签 git tag v1.0

默认标签是打在最新提交的commit上的。有时候,如果忘了打标签,比如,现在已经是周五了,但应该在周一打的标签没有打,怎么办?

方法是找到历史提交的commit id,然后打上就可以了:

$ git log --pretty=oneline --abbrev-commit
12a631b (HEAD -> master, tag: v1.0, origin/master) merged bug fix 101
4c805e2 fix bug 101
e1e9c68 merge with no-ff
f52c633 add merge
cf810e4 conflict fixed
5dc6824 & simple
14096d0 AND simple
b17d20e branch test
d46f35e remove test.txt
b84166e add test.txt
519219b git tracks changes
e43a48b understand how stage works
1094adb append GPL
e475afc add distributed
eaadf4e wrote a readme file
比方说要对add merge这次提交打标签,它对应的commit id是f52c633,敲入命令:

$ git tag v0.9 f52c633


git tag

git tag -d v0.1

因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。
git push origin <tagname>:

如果要推送某个标签到远程,使用命令git push origin <tagname>:

$ git push origin v1.0
Total 0 (delta 0), reused 0 (delta 0)
To github.com:michaelliao/learngit.git
 * [new tag]         v1.0 -> v1.0
或者,一次性推送全部尚未推送到远程的本地标签:

$ git push origin --tags
Total 0 (delta 0), reused 0 (delta 0)
To github.com:michaelliao/learngit.git
 * [new tag]         v0.9 -> v0.9
如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:

$ git tag -d v0.9
Deleted tag 'v0.9' (was f52c633)
然后,从远程删除。删除命令也是push,但是格式如下:

$ git push origin :refs/tags/v0.9
To github.com:michaelliao/learngit.git
 - [deleted]         v0.9
要看看是否真的从远程库删除了标签,可以登陆GitHub查看。


https://www.liaoxuefeng.com/wiki/896043488029600/1163625339727712

我们可以删除已有的GitHub远程库:

git remote rm origin
git remote add github git@github.com:michaelliao/learngit.git




打包下载单个文件,或者文件夹(先得设置ssh公私钥使用。 私钥放在用户家目录.ssh下, 公钥放到仓库的设置里)
git archive --remote=git@gitee.com:kim2008/drf_studay.git master app01/apps.py -o t2.tar.gz

下载整个库
git archive --remote=git@gitee.com:kim2008/drf_studay.git master -o t2.tar.gz

git push -u 命令中的 -u 或 --set-upstream 参数用于设置本地分支与远程分支之间的上游关系。这个参数在首次推送本地分支到远程仓库时特别有用,因为它会同时创建远程分支,并设置本地分支来跟踪这个远程分支。

解析这个命令和参数:

git push: 这是一个命令,用于将本地分支的更改推送到远程仓库。
-u 或 --set-upstream: 这是一个选项,用于设置上游关系。
当你首次推送一个本地分支到远程仓库时,你可能想要这个本地分支自动跟踪远程仓库中的对应分支。这样,在未来的 git pull 或 git push 操作中,你不需要指定远程仓库和分支的名字,Git 会自动知道你想要推送或拉取哪个远程分支。

例如,假设你有一个名为 feature-branch 的本地分支,并且你想要将它推送到名为 origin 的远程仓库的 feature-branch 分支。你可以使用以下命令:

bash
git push -u origin feature-branch
这条命令会做两件事:

将本地的 feature-branch 分支推送到远程仓库 origin 的 feature-branch 分支。
设置本地的 feature-branch 分支来跟踪远程仓库 origin 的 feature-branch 分支。
这样,在未来的操作中,你可以简单地使用 git pull 或 git push 来同步这个分支,而不需要指定远程仓库和分支的名字。

注意:一旦你设置了上游关系,你可以通过 git branch -vv 命令来查看所有的本地分支及其上游关系。

在这里插入图片描述

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值