Linux(ubuntu)下git / github/gitee使用

先附上git命令


linux@chenxiao:~$ cd Templates/

先进入一个目录,也可mkdir新建一个目录:用于接下来初始化为git可以管理的仓库

这个目录就是所说的工作目录,指当前正在进行开发的项目的本地目录。


linux@chenxiao:~/Templates$ git init
已初始化空的 Git 仓库于 /home/linux/Templates/.git/

1. 在终端输入  git init     初始化git仓库 


linux@chenxiao:~/Templates$ ll -a
总用量 16
drwxr-xr-x  3 linux linux 4096 12月 29 10:13 ./
drwxr-xr-x 38 linux linux 4096 12月 29 10:12 ../
drwxrwxr-x  7 linux linux 4096 12月 29 10:13 .git/

终端输入 ll- a查看一下隐藏文件,发现新产生一个 .git/文件。.git就是我们所说的本地仓库(版本库)

本地仓库是 Git 用来存储项目历史记录和版本信息的地方。它是存储在工作目录下的一个隐藏目录(.git文件夹)。仓库包含了项目的历史提交记录、分支、标签等重要信息。

远程仓库:远程仓库是位于远程服务器上的存储库,用于备份、协作和共享代码。常见的远程仓库托管服务包括 GitHub、GitLab 和 Bitbucket。你可以使用 git remote add 命令将本地仓库与远程仓库关联,并使用 git push 命令将本地仓库的代码推送到远程仓库中(文章末尾会有介绍)


linux@chenxiao:~/Templates$ vim test12-29.cpp

创建一个新文件   test12-29.cpp   随意写点数据进去


linux@chenxiao:~/Templates$ git add test12-29.cpp

2. 终端输入 git add test12-29.cpp  将文件更改添加到 Git 的暂存区 -A选项可全部添加

git  add.     . 表示添加当前目录下的所有文件到暂存区


linux@chenxiao:~/Templates$ git commit -m "first commit"
[master (根提交) 5bb74d1] first commit
 1 file changed, 6 insertions(+)
 create mode 100644 test12-29.cpp

3. 输入 git commit -m " " 它用于将更改提交到本地仓库(注释内容随便写,一般写我们本次提交的目的,修改了哪里) 根提交就是第一次初始提交


linux@chenxiao:~/Templates$ git status 
位于分支 master
无文件要提交,干净的工作区

4. 输入 git status  查看当前分支的状态,这将显示您当前工作目录与仓库的差异,例如哪些文件已被修改、哪些文件已被添加到暂存区、哪些文件已被删除等等。

上述的输出代表 :目前没有进行任何修改或添加操作,或者所有的修改和添加操作都已经成功提交到本地仓库中了。


linux@chenxiao:~/Templates$ vim test12-29.cpp

接下来修改下 test12-29.cpp文件。vim打开文件后,随便改动下内容。

linux@chenxiao:~/Templates$ git status 
位于分支 master
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git restore <文件>..." 丢弃工作区的改动)
	修改:     test12-29.cpp

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

修改之后再查看状态。输出信息表示:文件已经被修改过,但是还没有被添加到暂存区中用于下一次提交。想要再次提交,就要先 git add 先把改动的文件添加到暂存区。然后再使用 git commit 命令将更改提交到本地仓库中


linux@chenxiao:~/Templates$ git add test12-29.cpp 
linux@chenxiao:~/Templates$ git status 
位于分支 master
要提交的变更:
  (使用 "git restore --staged <文件>..." 以取消暂存)
	修改:     test12-29.cpp

添加暂存区后再git status查看下状态,输出信息显示当前分支是 master,并且工作区的 test12-29.cpp 文件已经被修改且已添加到暂存区中,可以进行下一次提交


linux@chenxiao:~/Templates$ git commit -m "second commit"
[master 0d125d6] second commit
 1 file changed, 2 insertions(+), 1 deletion(-)

接下来就可以用 git commit -m 进行提交:提交信息显示了提交的哈希值(0d125d6)、修改了的文件数目以及插入和删除的行数。

linux@chenxiao:~/Templates$ git status 
位于分支 master
无文件要提交,干净的工作区

再次查看状态,显示干净的工作区。


linux@chenxiao:~/Templates$ git log
commit 0d125d65e3b506f0cd0eb787c3dfbbf841947899 (HEAD -> master)
Author: chenxiao <925678073@qq.com>
Date:   Fri Dec 29 11:02:49 2023 +0800

    second commit

commit 5bb74d1951d5bd7dc7ecf6afe4ffee18d882fb90
Author: chenxiao <925678073@qq.com>
Date:   Fri Dec 29 10:41:00 2023 +0800

    first commit

5. 版本穿越 先使用 git log 命令可以查看项目的提交历史。每个提交记录包含一些关键信息,包括提交的哈希值、作者、日期和提交消息,还可以加上--pretty=oneline参数得到如下输出

linux@chenxiao:~/Templates$ git log --pretty=oneline
0d125d65e3b506f0cd0eb787c3dfbbf841947899 (HEAD -> master) second commit
5bb74d1951d5bd7dc7ecf6afe4ffee18d882fb90 first commit

还可以用git reflog查看 ,这里不演示了,自己敲一下就知道了

使用git reset命令,将版本回退:在使用 git reset 命令时,您需要提供一个有效的提交(commit)标识符或引用,如提交的哈希值、分支名或标签名。例如下面的 --hard HEAD^表示返回啥哪个一次提交的位置。--hard 选项时,请注意,您将不可恢复地丢失之前对代码所做的更改

linux@chenxiao:~/Templates$ git reset --hard HEAD^
HEAD 现在位于 5bb74d1 first commit

一般使用 git reset --hard 版本号   穿越到指定版本

再次 git reflog 查看一下,发现moving to 49aa20a 说明移动了. 此时文件内容为这次提交的内容。 

注:HEAD 是一个指向当前所在分支的指针,git版本控制的本质就是指针




git 分支

1.查看分支 git branch -v 

linux@chenxiao:~/Templates$ git branch -v
* master 49278f6 第二次提交

2.创建分支   git branch chenxiaobranch    其中chenxiaobranch是自己起的分支名

linux@chenxiao:~/Templates$ git branch chenxiaobranch

3.切换分支 git checkout chenxiaobranch

linux@chenxiao:~/Templates$ git branch -v
  chenxiaobranch 49278f6 第二次提交
* master         49278f6 第二次提交
linux@chenxiao:~/Templates$ git checkout chenxiaobranch 
切换到分支 'chenxiaobranch'
linux@chenxiao:~/Templates$ git branch -v
* chenxiaobranch 49278f6 第二次提交
  master         49278f6 第二次提交

切换分支后,注意 * 的位置,代表位于当前分支

4.合并分支

合并前先在chenxiaobranch分支下对文件进行修改。修改之后与master合并

linux@chenxiao:~/Templates$ git checkout master 
切换到分支 'master'
linux@chenxiao:~/Templates$ git merge chenxiaobranch 
更新 49278f6..3d5a58e
Fast-forward
 git.cpp | 1 +
 1 file changed, 1 insertion(+)

合并冲突:如果两个分支都对某个文件同位置进行了修改,并且都把修改commit提交到了本地

合并后会出现冲突。需要人为决定使用哪个为新代码内容

nux@chenxiao:~/Templates$ git merge chenxiaobranch 
自动合并 git.cpp
冲突(内容):合并冲突于 git.cpp
自动合并失败,修正冲突然后提交修正的结果。


如何推送到github 远程仓库呢???前提是前面add commit 等命令都执行完。

使用 SSH 协议进行推送 ,在终端依次输入如下命令

1.git remote set-url origin git@github.com:xovt/MyRepository  本地仓库与远程仓库关联 

origin 是远程仓库的名称      xovt/MyRepository 代表   git账户名/存储库名

在github中这里新建存储库

进入自己的存储库,点击绿色的code 就能看到SSH的连接地址。也可像我那样手动添加。

 我是写的这个,两个都一样。区别就是后者多了.git
2.git push origin master    将本地分支的提交推送到远程仓库。origin 是远程仓库的名称,master 是要推送的本地分支 。  执行这个命令后本地提交就推送到GitHub的仓库了,这里我自己的GitHub仓库设置的就是  xovt/MyRepository      

3.克隆(下载)git clone 存储库的路径(本次我用的是点击上图绿色Code的路径)

每次克隆都要新建一个空目录,然后add remote 到自己fork出来的远程仓库

linux@chenxiao:~/Templates$ git clone git@github.com:xovt/MyRepository.git
正克隆到 'MyRepository'...
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 8 (delta 1), reused 8 (delta 1), pack-reused 0
接收对象中: 100% (8/8), 24.65 MiB | 3.41 MiB/s, 完成.
处理 delta 中: 100% (1/1), 完成.
linux@chenxiao:~/Templates$ ls
git.cpp  MyRepository

克隆成功,查看在输入克隆命令的目录下下载,并自动创建与存储库同名的目录,包含所有文件


gitee

gitee 也是一个道理 

git remote add _origin git@gitee.com:chenxiaoubuntu/onboard.git

git push _origin cxbranch

补充                        

git remote -v 用于显示远程Git仓库地址的命令。列出了与当前Git仓库关联的所有远程仓库及其UR

linux@chenxiao:/media/mydisk/slam/slam_oncloud$ git remote -v
origin  ssh://git@192.168.3.40:1022/mgs/cloud/core/slam_oncloud/slam_oncloud.git (fetch)
origin  ssh://git@192.168.3.40:1022/mgs/cloud/core/slam_oncloud/slam_oncloud.git (push)

查看后显示与当前git仓库关联的远程仓库为origin 有两种操作方式(fetch 和 push);

git fetch origin” 命令从远程仓库获取代码;

git push origin” 命令将本地代码推送到远程仓库;

git branch -vv 命令查看当前分支与远程分支的关联关系

linux@chenxiao:/media/mydisk/slam/slam_oncloud$ git branch -vv
* develop e1bd5b7a [origin/develop] Merge branch 'lisrdev' into 'develop'
  master  5af7e3ee [origin/master] 对齐部分,筛选数据,把不需要的去掉

可以看到当前所在的分支是 develop,并且该分支与远程分支 origin/develop 关联;

其中,* 表示当前所在的分支。在这个例子中,当前分支是 develop,它与远程分支 origin/develop 关联,并且最新的提交标识为 e1bd5b7a,还表示了分支 lisrdev 的更改合并到了 develop 分支中;

第二句输出表示:master 分支在 origin 远程仓库的最新提交标识为 5af7e3ee,其中的更新是:对部分代码的对齐、数据筛选和去除不需要的更改。

git ls-remote   列出远程仓库的引用信息,包括分支、标签等.

git ls-remote --heads chenx  这个命令可以列出远程仓库 chenx 中的所有远程分支

git branch -r     列出远程仓库中的所有远程分支

 git remote show chenxnew

列出指定远程仓库的详细信息,包括该仓库的 URL,上游仓库信息,以及各个分支的跟踪情况等


  1. 本地分支:本地分支是在本地仓库中创建的代码分支。您可以在本地仓库中创建和切换不同的分支来独立开发和测试代码。通过使用本地分支,您可以同时进行多个任务或实验,而不会影响主分支或其他分支的稳定性。

    • 创建本地分支:使用 git branch <branch-name> 命令创建一个新的本地分支。
    • 切换到本地分支:使用 git checkout <branch-name> 命令切换到指定的本地分支。
    • 查看本地分支:使用 git branch 命令查看本地仓库中的所有分支。
  2. 远程分支:远程分支是存储在远程仓库中的代码分支。远程分支通常与团队成员共享,用于协同开发和代码集成。您可以将本地分支与远程分支进行跟踪,以便将本地的变更推送到远程仓库或者从远程仓库拉取最新的变更。

    1.查看远程分支:使用 git branch -rgit branch -a 命令查看远程仓库中的分支列表。   2 将本地分支推送到远程仓库:使用 git push <remote-name> <local-branch-name> 命令将本地分支推送到指定的远程仓库。  3从远程仓库拉取最新的变更:使用 git pull <remote-name> <remote-branch-name> 命令从指定的远程仓库拉取最新的变更到本地分支。

例如:运行命令 git pull origin master 将会从远程仓库 origin 的 master 分支拉取最新的更改到本地仓库中。


git log develop 

这个命令将显示 develop 分支上的提交历史记录

git show --name-only e40f9b15fcf5062b64e39361291a4785e97c12f1

该命令会列出该提交所修改的所有文件名。




git remote add chenx ssh://git@192.168.3.40:1022/xuna/slam_oncloud.git

你使用的 git remote add 命令是正确的,它用于将远程仓库添加到本地仓库中。

根据你提供的命令 git remote add chenx ssh://git@192.168.3.40:1022/xuna/slam_oncloud.git,它会将名为 chenx 的远程仓库添加到当前的 Git 项目中。该仓库的 URL 是 ssh://git@192.168.3.40:1022/xuna/slam_oncloud.git

这意味着你可以使用 chenx 作为远程仓库的别名,通过该别名你可以进行与远程仓库的交互,如推送(push)和拉取(pull)操作

git remote -v 查看远程仓库

提交代码前,先pull,不然在你提交时别人也修改了代码,会导致冲突

 git pull

用Vscode插件add

git commit --amend 

git commit --amend 是一个 Git 命令,它可以用来修改最后一次提交的信息或内容。当你执行 git commit --amend 时,Git 会打开文本编辑器,让你修改最后一次提交的提交信息。你可以编辑提交信息后保存并关闭文本编辑器,Git 就会将更改应用到最后一次提交中。

需要注意的是,如果最后一次提交已经推送到远程仓库,不建议修改提交内容,因为修改提交内容会改变提交的哈希值,会破坏提交历史的一致性。只有在本地仓库中进行修改是比较安全的做法。如果一定要修改已经推送到远程仓库的提交,可能需要进行强制推送,这可能会影响其他共享仓库的提交历史,需要谨慎操作。

xuna@linuxrenhaibin-Colorful-PCM-B660M-B:~/xndisk/chenx/slam_oncloud/build$ git push chenx
To ssh://192.168.3.40:1022/xuna/slam_oncloud.git
 ! [rejected]          branch_daimler -> branch_daimler (non-fast-forward)
error: failed to push some refs to 'ssh://git@192.168.3.40:1022/xuna/slam_oncloud.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

git push chenx --force


git reset --hard 69ec4ed180bcd6a608f2962ba9f28d89c9d9d41b  不保存回退

什么时候用:pull时有为保存的提交,不想保存,就可以回退 ,这个哈希值是commit值

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要同时配置gitgithubgitee,您需要按照以下步骤操作: 1. 在githubgitee上创建账户并创建仓库。 2. 在本地计算机上安装git。 3. 打开终端或命令行窗口,输入以下命令来配置gitgit config --global user.name "Your Name" git config --global user.email "youremail@example.com" 这将设置您的用户名和电子邮件地址,以便在提交代码时进行身份验证。 4. 生成SSH密钥并将其添加到您的githubgitee账户中。在终端或命令行窗口中输入以下命令: ssh-keygen -t rsa -C "youremail@example.com" 然后按照提示操作,将生成的公钥添加到您的githubgitee账户中。 5. 在本地计算机上创建一个新的git仓库,并将其与githubgitee仓库关联。在终端或命令行窗口中输入以下命令: git init git remote add origin git@github.com:yourusername/yourrepository.git git remote set-url --add origin git@gitee.com:yourusername/yourrepository.git 这将创建一个新的git仓库,并将其与您的githubgitee仓库关联。 6. 将您的代码添加到git仓库中,并将其推送到githubgitee仓库中。在终端或命令行窗口中输入以下命令: git add . git commit -m "Initial commit" git push -u origin master 这将将您的代码添加到git仓库中,并将其推送到您的githubgitee仓库中。 现在,您已经成功地配置了gitgithubgitee,并可以开始使用它们来管理您的代码了。 ### 回答2: Git是一款非常好用的版本管理系统,我们可以在其中配置多个远程仓库。这意味着我们可以在同一个本地Git仓库中,同时管理多个远程仓库,以实现不同平台之间的代码同步。 当我们使用Git时,首先需要在本地配置git的全局用户信息,如下所示: ``` $ git config --global user.name "Your Name" $ git config --global user.email "youremail@example.com" ``` 之后,我们需要在本地Git仓库中配置远程仓库的地址。假设我们要同时配置GitHubGitee,那么我们需要执行以下命令: ``` $ git remote add github https://github.com/yourusername/repo.git $ git remote add gitee https://gitee.com/yourusername/repo.git ``` 其中,"yourusername"是你在对应平台上的用户名,"repo.git"是你的仓库名称。执行以上命令后,Git会在本地仓库中添加两个远程仓库:githubgitee。 接下来,我们可以使用push命令将本地代码同步到远程仓库。如果我们要将代码同步到GitHubGitee,可以使用以下命令: ``` $ git push github master $ git push gitee master ``` 其中,"master"是分支名称,你也可以更改为其他分支名称。 除了push命令,我们还可以使用pull、fetch等命令从远程仓库获取代码或将远程仓库的代码合并到本地仓库中。 需要注意的是,当同一个本地仓库同时配置多个远程仓库时,你需要决定将哪一个仓库设为默认仓库,以防止误操作。你可以使用以下命令来设置默认仓库: ``` $ git push -u github master ``` 以上命令中的"-u"选项表示将github设置为默认仓库,以后在执行push命令时,就可以不用指定远程仓库的名称了。 综上所述,Git同时配置GitHubGitee非常简单,只需要执行几个简单的命令即可。只要你掌握了以上知识,就可以轻松实现多平台代码同步。 ### 回答3: Git 是一款强大的版本控制工具,可以为项目的开发和管理带来很多便利。在开发过程中,我们通常会将代码托管到代码托管平台上,比如 GithubGitee。为了更好地管理Git项目,我们需要配置 Git,以便同时连接 GithubGitee 两个平台。 首先,我们需要在GithubGitee上分别创建账号并登录。然后,我们需要生成 SSH key 并将其添加到 GithubGitee 上,以便在上传代码时进行身份验证。我们可以通过以下命令来生成 SSH key : ``` ssh-keygen -t rsa -C "your_email@example.com" ``` 生成成功后,我们需要在 GithubGitee 上的个人设置页面中添加 SSH key。 接下来,我们需要在本地以 Git Bash 的形式打开 Git ,在控制台中输入如下命令,来配置 GithubGitee : ``` git config --global user.name "用户名" git config --global user.email "邮箱地址" ``` 具体的用户名和邮箱地址需要根据自己的账号信息进行设置。这些信息会在用 Git 上传代码时作为身份信息,所以一定要输入正确的信息。 在 GithubGitee 的 repository 页面上,我们可以找到 Clone or download 按钮,在弹出的框中复制仓库的 SSH 地址。然后,我们可以使用如下命令克隆代码到本地: ``` git clone git@github.com:yourname/repository.git git clone git@gitee.com:yourname/repository.git ``` 其中,yourname 和 repository 分别是 GithubGitee 账号中相应的用户和仓库名。 当我们需要 Push 代码时,需要指定远程仓库的名字。我们可以使用如下命令添加远程仓库: ``` git remote add gitee git@gitee.com:yourname/repository.git git remote add github git@github.com:yourname/repository.git ``` 其中,giteegithub 分别是远程仓库的名字。我们可以使用如下命令将代码 Push 到对应的平台上: ``` git push gitee master git push github master ``` 以上就是同时配置 GithubGitee 的全部过程。在开发过程中,我们应当及时 Pull 远程仓库的代码,避免产生代码冲突。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值