Git操作

参考:

快速设置(Github所给)

第一部分描述了如何在命令行上创建一个新的代码仓库(repository):

  1. 首先,通过git init初始化一个新的Git仓库。
  2. 接着,通过git add README.md将 README.md 文件添加到暂存区。
  3. 然后,通过git commit -m "first commit"提交这次修改,并附带了一条提交信息。
  4. 使用git branch -M main将当前分支重命名为 main。
  5. 通过git remote add origin git@github.com:user/reponame.git将远程仓库的地址添加为本地仓库的远程地址。

    origin 是一个默认的远程仓库名称。具体来说,它是一个指向你在 GitHub(或其他 Git 托管服务)上托管的项目的简短别名

  6. 最后,通过 git push -u origin main 将本地仓库的 main 分支推送到远程仓库,并将它们关联起来。

第二部分描述了如何从命令行推送已存在的仓库:

  1. 首先,通过 git remote add origin git@github.com:user/reponame.git 将远程仓库的地址添加为本地仓库的远程地址。
  2. 然后,通过 git branch -M main 将当前分支重命名为 main。
  3. 最后,通过 git push -u origin main 将本地仓库的 main 分支推送到远程仓库,并将它们关联起来。

Git常用命令

git init //初始化项目
git status //查看当前目录下文件的状态
git add (文件名 | .)//添加到暂存盘,文件名代表某文件,"."代表所有文件
git commit -m "备注"  //提交到git本地仓库,产生新版本,引号中的备注必须写
git log  //查看所有提交的记录
git clone 链接  //克隆远程仓库,进行连接
git checkout -b [branch]  //新建一个分支,并切换到该分支
git checkout [branch] //切换到某分支
git branch -d [branch-name] //删除分支
git merge [branch]  //合并指定分支到当前分支
git push  //将本地仓库push到远程仓库

git remote add origin 'git仓库地址' //建立远程

1. 指定名称和邮箱——git安装后

$ git config --list    //查看配置列表
$ git config --global user.name "Your Name"
$ git config --global user.name    //查看用户名
$ git config --global user.email "email@example.com"
$ git config --global user.email   //查看邮箱

2. 创建版本库

$ mkdir learngit	//创建
$ cd learngit	//使用
$ pwd	//查看当前目录
$ git init	//初始化,生成.git文件(若该文件隐藏,则使用ls -ah)

3. 把文件添加add和提交commit到版本库

$ git add test.txt	//添加文件到暂存区
$ git commit -m "wrote a test file"	//提交文件到仓库
$ git commit -m "add 3 files."		//一次性提交多个文件到仓库

4. 版本控制

$ git log	//查看提交历史记录,从最近到最远,可以看到3次
$ git log --pretty=oneline	//加参,简洁查看
$ git reflog	//查看每一次修改历史
$ cat test.txt	//查看文件内容
$ git status	//查看工作区中文件当前状态

$ git reset --hard HEAD^(HEAD~100)(commit id)	//回退版本


$ git checkout -- [filename]  //撤销工作目录某个文件的修改
$ git checkout -- .           //撤销工作目录所有文件的修改

$ git reset HEAD test.txt	//丢弃暂存区的修改(若已提交,则回退)

$ git commit --amend          //撤销提交,注释写错了,重新给用户一次机会改注释

git reset 命令的作用是将暂存区的文件取消暂存或者是切换到指定版本
取消暂存命令格式:git reset 文件名
切换到指定版本命令格式:git reset --hard 版本号,版本号通过 git log 命令来查看
注意:每次Git提交都会产生新的版本号,通过版本号就可以回到历史版本

git reset --hard HEAD|HEAD^|HEAD^^|HEAD~100 回退到上几个版本
HEAD是当前版本,HEAD^上个版本,HEAD^^上上个版本,HEAD~100回退100个版本
git reset --hard 3628164 回退到指定版本号,版本号不用写全

git checkout -- readme.txt 撤销工作区修改(尚未add,尚未commit)
git reset HEAD readme.txt, 再git checkout -- readme.txt 撤销暂存区修改(已经add,尚未
commit)
git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版
本。
git reset --hard HEAD^(版本回退) 撤销版本库修改(已经commit,尚未推送到远程)

5. 删除文件

$ rm test.txt
//直接删除
$ git rm test.txt
$ git commit -m "remove test.txt"
//删错了,恢复
$ git checkout -- test.txt

6. 远程仓库

$ ssh-keygen -t rsa -C "youremail@example.com"	//创建SSH Key
$ git remote add origin git@github.com:Daisy/AKgit.git	//关联
$ git push -u origin master	//将本地内容推送到远程仓库(第一次)
$ git push origin master	//将本地内容推送到远程仓库(之后)
$ git remote -v        //查看远程仓库信息
$ git remote rm origin	//删除远程仓库(解绑)
$ git clone git@github.com: Daisy/AKgit.git	//克隆远程仓库
//克隆之后使用和查看
$ cd gitskills
$ ls
$ git remote	//查看远程库的信息
$ git remote -v	//查看远程库的详细信息

7. 分支

    git log --oneline --decorate --graph --all   //查看整个项目的分支图  
    git branch                                   //查看分支列表
    git branch -v                                //查看分支指向的最新的提交
    git branch [name]                            //在当前提交对象上创建新的分支
    git branch [name] [commithash]               //在指定的提交对象上创建新的分支
    git checkout [name]                          //切换分支
    git branch -d [name]                         //删除空的分支,删除已经被合并的分支
    git branch -D [name]                         //强制删除分支 

    git merge [branchname]                       //合并到当前分支

原理图:

应用:使用SSH建立连接流程

  1. 先设置Git提交时的用户名和邮箱(针对初次使用)
 - 全局设置(对所有git工程都有效)  
     设置用户名:git config --global user.name  用户名
     设置邮箱: git config --global user.email  邮箱
 - 可以在C:\User\电脑用户名\.gitconfig 目录下查看具体用户名和邮箱信息
  1. 创建SSH Key
-  创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,在这里打开Git Bash,创建SSH Key:
- `$ ssh-keygen -t rsa -C "youremail@example.com"`
- 这里的邮件地址换成自己的邮件地址(和上面第一步中邮箱是一致的),然后一路回车,使用默认值即可。
  如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
- 登陆GitHub,打开“settings”,“SSH and GPG Keys”页面,点击‘New SSH key’,然后填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容,然后点击’Add SSH key"
  1. Github上创建仓库
  2. Git仓库和本地仓库连接
- Github上仓库获取SSH连接
- 本地git bash输入:git remote add origin git@github.com:yourrepo.git
  1. 本地仓库内容推送远程
$ git push -u origin master	//将本地内容推送到远程仓库(第一次)
$ git push origin master	//将本地内容推送到远程仓库(之后)

问题:

问题一:pull时出现:couldn't find remote ref master
具体:问题是由Devcode文件中操作中产生;
本地仓库:
1. master分支:稳定版本,用来上传远程仓库master分支
2. second分支:更新版本,用来存放最新更新
远程仓库:master分支

远程项目为空,没有分支;
解决:通过提交文件到远程从而创建远程分支

  git add test.txt
  git commit -m "test"
  git push origin <本地分支名>:<远程分支名> (注意:pull是远程在前,本地在后)

问题二:fatal:the current branch XX has no upstream branch

具体问题:

$ git push
fatal: The current branch second has no upstream branch.
To push the current branch and set the remote as upstream, use

$git push --set-upstream origin second
To have this happen automatically for branches without a tracking
upstream, see 'push.autoSetupRemote' in 'git help config'.

push 本地分支XXX代码到远程分支报错
当前分支XXX 与远程对应的XXX分支无关联。要推动当前分支并将远程设置为上游
解决1:根据提示的命令 git push --set-upstream origin XXX,
解决2:指定分支push
将本地当前分支 推送到 远程指定分支上(注意:pull是远程在前本地在后,push相反):
git push origin <本地分支名>:<远程分支名>

问题三:push本地仓库失败,并且push到错误分支。

具体问题:

error: failed to push some refs to 'github.com:Gievance/Cnblogs-Theme-SimpleMemory.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. If you want to integrate the remote changes, use 'git pull'
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

解决:该处失败原因是本地项目落后于远程项目,pull再push。
此处,主要是分支问题
首先,确定修改文件在git初始化的项目目录下

git remote add origin git@远程链接 //此处origin代表远程仓库,是别名
git push origin <本地分支>[:<远程分支>] //[]内的可写,可不写。不写,则默认推送到远程的默认分支。
posted @ 2023-11-16 11:59  AlexanderOscar  阅读(48)  评论(0编辑  收藏  举报