git常用

常用配置

安装完成后,还需要配置git,在命令行输入:

1
2
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

Git 使用一系列配置文件来保存你自定义的行为。 它首先会查找系统级的 /etc/gitconfig 文件,该文件含有系统里每位用户及他们所拥有的仓库的配置值。 如果你传递 --system 选项给 git config,它就会读写该文件。

接下来 Git 会查找每个用户的 ~/.gitconfig 文件(或者 ~/.config/git/config 文件)。 你可以传递 --global 选项让 Git 读写该文件。

最后 Git 会查找你正在操作的仓库所对应的 Git 目录下的配置文件(.git/config)。 这个文件中的值只对该仓库有效,它对应于向 git config 传递 --local 选项。

以上三个层次中每层的配置(系统、全局、本地)都会覆盖掉上一层次的配置,所以 .git/config 中的值会覆盖掉 /etc/gitconfig 中所对应的值。

  • 注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

    Git 的配置文件是纯文本的,所以你可以直接手动编辑这些配置文件,输入合乎语法的值。 但是运行 git config 命令会更简单些。

配置ssh

第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

1
$ ssh-keygen -t rsa -C "youremail@example.com"

你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。

如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:

然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。

使用下面命令

1
ssh -T git@github.com

测试是否配置成功

1
Hi RoninLee! You've successfully authenticated, but GitHub does not provide shell access.

出现这样一段话,即证明配置成功。

克隆

1
2
git clone git@github.com:Knightwood/Aplayer.git #克隆项目
git clone -b <分支名称> git@github.com:Knightwood/Aplayer.git #克隆特定的分支

分支

1
2
3
4
5
6
7
8
9
git branch # 查看分支
git branch <分支名称> #创建新分支
git checkout -b <分支名称> #创建新分支并切换到新分支
git checkout <分支名称> #切换到新的分支
git branch -r #查看远程分支
git branch -a #查看所有分支
git push origin [branch name] #将新分支推送到github
git branch -d [branch name] #删除本地分支
git push origin :[branch name] #删除github远程分支

提交代码

1
2
3
4
5
6
7
git add all #可以提交未跟踪、修改和删除文件(无论在哪个目录执行都会提交相应文件)
git add . #可以提交未跟踪和修改文件,但是不处理删除文件(只能够提交当前目录或者它后代目录下相应文件)
-----
git commit #提交代码
git commit -m "add my code to new branchB" # -m 参数:可以直接在后面添加提交信息。
git push origin [branch name] #push 到git仓库
git commit -a -m '合并module' # -a 把所有未暂存的提交.-m 附带了题解信息

删除历史版本,保留当前状态

有时候,我们误提交了某些隐私文件,使用git rm xxx删除后,其实版本库中是有历史记录的,想要删除这些记录,但是又不想删除仓库,重建来提交。那么就想办法删除历史记录了。
我们当然不能直接删除.git文件夹,这将导致git存储库出现不可预知的问题。
要删除所有提交历史记录,但将代码保持在当前状态,可以按照以下方式安全地执行此操作:

  1. 创建并切换到latest_branch分支

    1
    2
    3
    git checkout --orphan latest_branch 创建orphan分支,名为latest_branch
    注:
    如果不提交东西,这个分支实际上没有创建
  2. 添加所有文件

    1
    git add -A
  3. 提交更改

    1
    git commit -am "删除历史版本记录,初始化仓库"
  4. 删除分支

    1
    git branch -D master
  5. 将当前分支重命名

    1
    git branch -m master
  6. 强制更新存储库

    1
    git push -f origin master

解决方案来自:如何删除GitHub中的所有提交历史记录?

  • git checkout –orphan的核心用途是在非新存储库上以类似git init的状态创建分支。

    没有这种能力,您所有的git分支都将有一个共同的祖先,即您的初始提交。这是很常见的情况,但绝不是唯一的情况。例如,git允许您将多个独立项目作为单个存储库中的不同分支进行跟踪。

    这就是为什么您的文件被报告为”要提交的更改”的原因:在git init状态下,尚未创建第一个提交,因此所有文件都是git新的。

    用途:例如GitHub Pages,将存储库的网站存储在存储库中但位于单独的分支上。除了该网站的历史记录外,没有任何其他原因可以存储该分支机构。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!